import varShortTime from '../storage/varShortTime.js';

/**
 * 请求地址队列处理【同步方法】
 * @description 请求地址队列处理，用于判定：哪些接口正在请求，拦截该请求
 * @param {String} type = [add|del] 处理方式，值域解释：add-添加、del-删除
 * @param {String} url 要请求的api接口地址
 * @return {Boolean} 操作是否成功
 */
function queue(type = 'add', url = '') {
	
	// 初始化返回数据为false
	var data_return = false;
	
	if (typeof(url)=="string" && url.length>0)
	{
		// 用于存放队列的 临时变量名
		var str_name = '$focus_network_queue_list';
		// 链接字符串
		var str_line = '_FOCUSUI_';
		
		// 初始化"已经存在的请求列表"
		var arr_api = [];
		// 读取本地临时缓存
		var save_short = varShortTime('get');
		if (save_short && save_short[str_name]) { arr_api = save_short[str_name].split(str_line); }
		
		// 1. 添加地址
		if (type == "add")
		{
			// 保存队列中 是否存在相同的数据
			var index = arr_api.indexOf(url);
			// 如果有，说明正在请求，直接不允许添加
			if (index >= 0) { data_return = false; }
			// 没找到
			else {
				// 添加入地址数组
				arr_api.push(url);
				// 队列数组 → 字符串，准备保存
				var str_queue = arr_api.join(str_line);
				// 重新缓存 队列数据
				var obj_save_back = {};  obj_save_back[str_name] = str_queue;
				varShortTime('set', obj_save_back);
				// 标记为"处理成功"
				data_return = true;
			}
		}
		
		// 2. 删除地址
		else if (type == "del")
		{
			// 相同url数据位置 下标
			var index = arr_api.indexOf(url);
			// 如果有则删除
			if (index >= 0) { arr_api.splice(index, 1); }
			
			// 队列数组 → 字符串
			var str_queue = arr_api.join(str_line);
			// 重新缓存 队列数据
			var obj_save_back = {};  obj_save_back[str_name] = str_queue;
			varShortTime('set', obj_save_back);
			
			// 标记为"处理成功"
			data_return = true;
		}
		
	}
	
	// 返回结果数据
	return data_return;
}

export default queue;